package leetcode;

import java.util.Arrays;

/**
 * 给你一个以行程长度编码压缩的整数列表 nums 。
 * 考虑每对相邻的两个元素 [freq, val] = [nums[2*i], nums[2*i+1]] （其中 i >= 0 ），每一对都表示解压后子列表中有 freq 个值为 val 的元素，你需要从左到右连接所有子列表以生成解压后的列表。
 * 请你返回解压后的列表。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/decompress-run-length-encoded-list
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author Europa
 */
public class Num1313 {

    public int[] decompressRLElist(int[] nums) {
        // 计算总长度
        int len = 0;
        for (int i = 0; i < nums.length; i += 2) {
            len += nums[i];
        }
        int[] result = new int[len];
        // 记录循环次数的索引
        int index = 0;
        // 外层循环次数为 num的长度/2
        for (int i = 0; i < nums.length; i += 2) {
            // 内层循环次数为val出现的次数
            for (int j = 0; j < nums[i]; j++) {
                // 新数组的值与出现次数
                result[index] = nums[i + 1];
                index++;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        Num1313 num1313 = new Num1313();
        int[] ints = {42,39};
        int[] ints1 = num1313.decompressRLElist(ints);
        System.out.println(Arrays.toString(ints1));
    }
}
